Speculative processing in computers is a known technique that involves attempting to predict the future course of an executing program in order to speed its execution. The predictions may or may not be correct, but when they are correct, dependencies of a given program may be resolved more quickly, and needed resources made available to the program more quickly, than might be the case absent the speculative processing. As a result, the program may execute more quickly.
Computer processors are becoming increasingly speculative, meaning that an effort is made to predict increasingly far into the future. How far ahead prediction is attempted may be referred to as the “depth” of the speculation; thus, attempting to predict far into the future may be referred to as “deep speculation.” Speculative processing requires storage to hold speculatively-generated results. The deeper a computer speculates, the more storage may be needed to hold speculation-generated results.
The storage for speculative processing may be provided by a computer's physical registers, also referred to as the “register file.” Thus, one approach to better accommodating increasingly deep speculative processing could be to make the register file bigger. However, this approach would have associated penalties in terms of, among other things, increased access latency, power consumption and silicon area required.